6.2.7 为镜像打多个标签

关于镜像有一点不得不提,一个镜像可以根据用户需要设置多个标签。这是因为标签是存放在镜像元数据中的任意数字或字符串。一起来看下面的示例。

docker image pull 命令中指定 -a 参数来拉取仓库中的全部镜像。接下来可以通过运行 docker image ls 查看已经拉取的镜像。如果读者使用Windows示例,则可以将Linux示例中的镜像仓库 nigelpoulton/tu-demo 替换为 microsoft/nanoserver

注:

如果拉取的镜像仓库中包含用于多个平台或者架构的镜像,比如同时包含Linux和Windows的镜像,那么命令可能会失败。

$ docker image pull -a nigelpoulton/tu-demo
latest: Pulling from nigelpoulton/tu-demo
237d5fcd25cf: Pull complete
a3ed95caeb02: Pull complete
<Snip>
Digest: sha256:42e34e546cee61adb1...3a0c5b53f324a9e1c1aae451e9
v1: Pulling from nigelpoulton/tu-demo
237d5fcd25cf: Already exists
a3ed95caeb02: Already exists
<Snip>
Digest: sha256:9ccc0c67e5c5eaae4b...624c1d5c80f2c9623cbcc9b59a
v2: Pulling from nigelpoulton/tu-demo
237d5fcd25cf: Already exists
a3ed95caeb02: Already exists
<Snip>
Digest: sha256:d3c0d8c9d5719d31b7...9fef58a7e038cf0ef2ba5eb74c
Status: Downloaded newer image for nigelpoulton/tu-demo
$ docker image ls
REPOSITORY              TAG     IMAGE ID       CREATED     SIZE
nigelpoulton/tu-demo     v2     6ac21e..bead   1 yr ago    211.6 MB
nigelpoulton/tu-demo     latest 9b915a..1e29   1 yr ago    211.6 MB
nigelpoulton/tu-demo     v1     9b915a..1e29   1 yr ago    211.6 MB

刚才发生了如下几件事情。

首先,该命令从 nigelpoulton/tu-demo 仓库拉取了3个镜像: latestv1 以及 v2

其次,注意看 docker image ls 命令输出中的 IMAGE ID 这一列。读者会发现只有两个不同的Image ID。这是因为实际只下载了两个镜像,其中有两个标签指向了相同的镜像。换句话说,其中一个镜像拥有两个标签。如果读者仔细观察会发现 v1latest 标签指向了相同的 IMAGE ID ,这意味着这两个标签属于相同的镜像。

这个示例也完美证明了前文中关于 latest 标签使用的警告。在本例中, latest 标签指向了 v1 标签的镜像。这意味着 latest 实际指向了两个镜像中较早的那个版本,而不是最新的版本! latest 是一个非强制标签,不保证指向仓库中最新的镜像!

results matching ""

    No results matching ""